package smartlifev30.com.sdk.api.gateway_app;

import android.support.annotation.NonNull;
import android.support.annotation.Nullable;

import java.util.List;

import smartlifev30.com.sdk.api.CallBack;
import smartlifev30.com.sdk.bean.request.AddSceneRequest;
import smartlifev30.com.sdk.bean.request.EditSceneRequest;
import smartlifev30.com.sdk.bean.response.LoginResponse;
import smartlifev30.com.sdk.bean.response.SceneQueryResponse;


/**
 * Created by tys on 2018/8/13.
 */

public interface ISceneMgmtGateway {

    /**
     * 查询场景信息
     *
     * @param userName
     * @param token
     * @param sn
     * @param sceneId  长度为0时代表查询所有场景
     * @param callBack
     */
    void queryScene(@NonNull String userName, @NonNull String token, @NonNull String sn,
                    @Nullable List<Integer> sceneId, @NonNull CallBack<SceneQueryResponse> callBack);

    /**
     * 添加一个场景
     * @param userName
     * @param token
     * @param sn
     * @param scene
     * @param callBack
     */
    void addScene(@NonNull String userName, @NonNull String token, @NonNull String sn,
                  @NonNull AddSceneRequest.Scene scene, @NonNull CallBack<LoginResponse> callBack);


    /**
     * 删除一个/多个场景
     * @param userName
     * @param token
     * @param sn
     * @param sceneId 度为0时代表清空所有场景
     * @param callBack
     */
    void delScene(@NonNull String userName, @NonNull String token, @NonNull String sn,
                  @Nullable List<Integer> sceneId, @NonNull CallBack<LoginResponse> callBack);


    /**
     * 编辑某一场景信息
     * @param userName
     * @param token
     * @param sn
     * @param scene
     * @param callBack
     */
    void editScene(@NonNull String userName, @NonNull String token, @NonNull String sn,
                   @NonNull EditSceneRequest.Scene scene, @NonNull CallBack<LoginResponse> callBack);

    /**
     * 执行某一场景
     * @param userName
     * @param token
     * @param sn
     * @param sceneId
     * @param callBack
     */
    void exeScene(@NonNull String userName, @NonNull String token, @NonNull String sn,
                  @NonNull Integer sceneId, @NonNull CallBack<LoginResponse> callBack);


}
